/**
 * 格式化时间显示
 * 根据给定时间与当前时间的差距，返回不同格式的时间描述
 * 超过一个月：显示为年月日时分秒
 * 一个月内：显示为几天前
 * 一天内：显示为几小时前
 * 一小时内：显示为几分钟前
 * @param dateString ISO格式的时间字符串 (如: '2025-11-10T09:36:36.000Z')
 * @returns 格式化后的时间描述
 */
export function formatTimeDisplay(dateString: string): string {
  try {
    const targetDate = new Date(dateString);
    const currentDate = new Date();
    
    // 计算时间差（毫秒）
    const timeDiffMs = currentDate.getTime() - targetDate.getTime();
    
    // 转换为分钟
    const minutesDiff = Math.floor(timeDiffMs / (1000 * 60));
    
    // 转换为小时
    const hoursDiff = Math.floor(timeDiffMs / (1000 * 60 * 60));
    
    // 转换为天数
    const daysDiff = Math.floor(timeDiffMs / (1000 * 60 * 60 * 24));
    
    // 转换为月数（近似值，按30天计算）
    const monthsDiff = Math.floor(daysDiff / 30);
    
    // 根据时间差返回不同格式
    if (monthsDiff >= 1) {
      // 超过一个月：显示为年月日时分秒
      const year = targetDate.getFullYear();
      const month = String(targetDate.getMonth() + 1).padStart(2, '0');
      const day = String(targetDate.getDate()).padStart(2, '0');
      const hours = String(targetDate.getHours()).padStart(2, '0');
      const minutes = String(targetDate.getMinutes()).padStart(2, '0');
      const seconds = String(targetDate.getSeconds()).padStart(2, '0');
      
      return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
    } else if (daysDiff >= 1) {
      // 一个月内：显示为几天前
      return `${daysDiff}天前`;
    } else if (hoursDiff >= 1) {
      // 一天内：显示为几小时前
      return `${hoursDiff}小时前`;
    } else {
      // 一小时内：显示为几分钟前
      // 如果不足1分钟，显示为"刚刚"
      return minutesDiff > 0 ? `${minutesDiff}分钟前` : '刚刚';
    }
  } catch (error) {
    console.error('时间格式化失败:', error);
    // 出错时返回原始时间字符串
    return dateString;
  }
}

/**
 * 格式化日期为本地字符串
 * @param dateString ISO格式的时间字符串
 * @param options 格式化选项
 * @returns 格式化后的日期字符串
 */
export function formatDate(dateString: string, options: Intl.DateTimeFormatOptions = {}): string {
  try {
    const date = new Date(dateString);
    return date.toLocaleString('zh-CN', options);
  } catch (error) {
    console.error('日期格式化失败:', error);
    return dateString;
  }
}